Method for generating mutually orthogonal signals having a controlled spectrum

ABSTRACT

A method for generating mutually orthogonal signals having a controlled spectrum, includes the generation of a plurality of mututally orthogonal, controlled-power discrete spectra s(i) having dimension Q, i designating spectrum number. The aforementioned spectra represent time signals in the spectral range and have a modulus &amp;mgr; that is constant in a spectral line designation set G and zero everywhere else. The method includes the following steps: determining ( 20 ) at least part of a complex Hadamard matrix H of order dR=w in the case of spectra of real signals and d R =2.w in the case of spectra of complex signals; determining ( 22 ) the extension P of matrix H from G and dimension Q; and obtaining ( 22 ) controlled-power spectra s(i)=&amp;mgr;.P(H[.][i]), wherein H[.][i] designates the i-th column of matrix H. In addition, a plurality of mutually orthogonal time signals s(i) is also generated from the discrete complex signals.

The present invention relates to a method for generating mutually orthogonal signals having a controlled spectrum.

It has numerous and varied fields of application, including tattooing files of signals such as audio signals.

Audio tattooing by spectrum spreading uses temporal signals with a wide spectrum referred to as an extended spectrum. Tattooing uses either one or a number of signals stored in a dictionary for the modulation of symbols. When a plurality of signals is used, it is preferable to use signals whose intercorrelation product is zero, as this facilitates detection by correlation. The intercorrelation of the signals is a particular form of the scalar product. It can thus be said that seeking signals that are not correlated with each other amounts to choosing a family of mutually orthogonal signals.

In the context of tattooing, there is a requirement for signals with a controlled spectrum, i.e. that correspond to a particular template. For example, a signal coded using advanced audio coding (AAC) at 24 kbps per channel occupies a band of the order of 7 kHz, whence the benefit of controlling the spectrum of the mark by limiting its bandwidth to 7 kHz. Moreover, tattooing must also be as discreet as possible, and will therefore be modulated and shaped taking account of psychoacoustic properties. To guarantee accurate shaping, below the masking curve guaranteeing the inaudibility of the mark, the signal to be modulated must have a perfectly blank spectrum.

Real mutually orthogonal temporal signals of given length are generally generated either by orthogonalizing a family of temporal, generally random, signals or by using lines or columns of real Hadamard matrices.

Each of these prior art techniques has the drawback of producing signals whose power spectrum is difficult to control. For orthogonalization, for example, dynamic range variations of 60 dB and more are observed over the power spectrum, the spectrum being chopped and highly irregular. Moreover, the real Hadamard matrix technique can produce only signals of length 2 or multiples of 4.

In code division multiple access systems, for example CDMA systems conforming to International Standard 95, the signals used to separate the users are real orthogonal Hadamard sequences with spectrum that depends on the sequence number. This approach is described in “UMTS, les origines, l'architecture, la norme”, Pierre LESCUYER, Dunod, 2nd edition, 2002. For example, the first line of the Hadamard matrix contains only 1s. As a result this step must be followed by a step of spectrum spreading as such, or scrambling, before modulation (see pages 116 to 119 of the above work), which increases the complexity of this kind of system.

The document WO-A-00 77962 describes a method for generating small numbers of complex orthogonal spectra, typically seven spectra, by discretizing the phase of each complex sample. This method has the particular drawback of providing only a restricted number of sequences.

To improve on the situation, the aim is to generate real signals and mutually orthogonal complex spectra of arbitrary length whose power spectra can be controllable in terms of the length of the signals generated and the number of orthogonal signals required.

Accordingly, the present invention proposes a method of generation of a plurality of discrete spectra ŝ(i) of dimension Q, mutually orthogonal and of controlled power, i designating the number of the spectrum, said spectra representing temporal signals in the spectral domain and being of constant modulus μ in a set G designating spectrum lines and zero everywhere else, the method being remarkable in that it consists in:

-   -   determining at least part of a complex Hadamard matrix H of         order d_(R)=w in the case of real signal spectra and d_(R)=2.w         in the case of complex signal spectra;     -   determining the prolongation P of the matrix H from G and from         the dimension Q; and     -   obtaining the controlled power spectra ŝ(i)=μ.P(H[.][i]), where         H[.][i] designates the i^(th) column of the matrix H.

Thus the invention generates mutually orthogonal discrete spectra of any length, any required number and controlled power. Furthermore, it is not necessary to construct the entire complex Hadamard matrix.

In one particular embodiment, the step of determination of at least part of the complex Hadamard matrix consists in obtaining a column of a matrix of rotations calculated from predetermined rotation and permutation keys applied to a reference Hadamard matrix.

This system using keys generates varied families of spectra with little correlation.

In one particular embodiment, the method further includes a step of decomposition of the order d_(R) of the reference Hadamard matrix into a product of factors and a substep of calculation of the lowest common multiple of the set of said factors for the determination of the reference Hadamard matrix.

Thus choosing the lowest common multiple means that the phases of the complex spectrum generated will be as far apart as possible. This increases robustness to noise.

In one particular embodiment, the method further includes a step of determining a signal:

${{{s(i)}\lbrack k\rbrack} = {\sum\limits_{x \in Q}\left( {{{\hat{s}(i)}\lbrack x\rbrack} \cdot {\prod\limits_{\alpha \in {\lbrack{X + T}\rbrack}}\; {{F_{(q_{\alpha})}\left\lbrack {k\lbrack\alpha\rbrack} \right\rbrack}\left\lbrack {x\lbrack\alpha\rbrack} \right\rbrack}}} \right)}},$

where:

-   -   i designates the number of the signal,     -   Q designates a set of coordinates,     -   X designates the number of spatial dimensions,     -   T designates the number of temporal dimensions, and     -   F_((q) _(α) ₎ designates the Fourier matrix of order q_(α), so         as to generate a plurality of mutually orthogonal temporal         signals s(i).

The present invention also proposes a method of generation of a family of temporal signals, remarkable in that it consists in combining families of mutually orthogonal temporal signals generated by a method as succinctly described above and the spectra supports whereof are separate.

Using families of complex spectra with separate power spectra quantizes the signal in the transformed domain using progressive frequency modeling of the signal by complex orthogonal spectra. In each step this approach yields optimum scale factors for the complex spectra directly, without necessitating re-optimization of the previous factors, in contrast to the prior art, which uses a Gram-Schmidt method for this re-optimization.

The present invention also proposes the use of mutually orthogonal temporal or complex spectrum signals generated by a method as succinctly described above for spectrum spreading in spread spectrum transmission systems.

By their construction, these signals or spectra are spectrum spread in the transmitted band and their power is of value 1, in contrast to the Hadamard sequences used in the current American IS95 code division multiple access system. In the field of audio coders, they can be used as quantization dictionaries in predictive coders. In this case, quantization is effected by two fast algorithms: on the one hand, one for each fast Fourier transform for passage into the frequency domain and, on the other hand, for the scalar product involved in the quantization.

The present invention also proposes the use of mutually orthogonal temporal or complex spectrum signals generated by a method as succinctly described above for audio tattooing and its detection.

In audio tattooing, these spectra can be used directly for tattooing in the frequency domain, their ideally blank power spectrum in the band or bands transmitted enabling them to be shaped accurately by psychoacoustic weighting, which is an important property for ensuring that the tattooing is inaudible. Prior art spectra do not provide for this accurate shaping, given that their power spectrum has a non-negligible dynamic range variation. In code division multiple access transmission systems the complex spectra of the invention also have the advantage of being easy to modulate as they stand, in defined frequency bands.

In audio tattooing the signals in the time domain can be used directly for spread spectrum tattooing, in which a symbol on K_(b) bits is represented by K_(b) orthogonal signals. The same advantages are obtained as those mentioned above for complex spectra.

The present invention also proposes the use of controlled power mutually orthogonal complex spectra generated by a method as succinctly described above for coding or representing audio signals quantized with the aid of a dictionary or a family of dictionaries of real or complex values.

In audio coders, these spectra can be used as quantization dictionaries for the signals produced by a discrete Fourier transform. In this case, quantization is effected by a fast algorithm, for example, whose structure is derived from the manner in which the dictionary is constructed (in one particular embodiment, by Kronecker products of small basic matrices).

The present invention also proposes the use of controlled power mutually orthogonal temporal or complex spectrum signals generated by a method as succinctly described above for optimization of metrology excitation data.

For calculating the impulse response of acoustic rooms in metrology, the fact that the sequences generated have an ideally flat in-band spectrum improves the accuracy of detection compared to the routine use of pseudo-noise sequences generated by shift registers, the correlation function of which includes a term that is parasitic with respect to its ideal value, which is a Dirac.

In a correlated way, the invention proposes a device for generation of a plurality of discrete spectra ŝ(i) of dimension Q, mutually orthogonal and of controlled power, i designating the number of the spectrum, said spectra representing temporal signals in the spectral domain and being of constant modulus μ in a set G designating spectrum lines and zero everywhere else, the device being remarkable in that it includes:

-   -   a module for determining at least part of a complex Hadamard         matrix H of order d_(R)=w in the case of real signal spectra and         d_(R)=2.w in the case of complex signal spectra;     -   a module for determining the prolongation P of the matrix H from         G and from the dimension Q; and     -   a module for obtaining the controlled power spectra         ŝ(i)=μ.P(H[.][i]), where H[.][i] designates the i^(th) column of         the matrix H.

The present invention further proposes a computer program product adapted to be loaded into a programmable device, remarkable in that it includes sequences of instructions for implementing a method as succinctly described above when the program is loaded and executed by the programmable device.

The particular characteristics and advantages of the method of generating a family of temporal signals, of the various uses of the temporal signals or complex spectra, of the device for generating a plurality of discrete spectra, and of the computer program product being similar to those of the method for generating a plurality of discrete spectra, are not repeated here.

Other aspects and advantages of the invention will become apparent on reading the following detailed description of particular embodiments of the invention, given by way of nonlimiting example. The description refers to the accompanying drawings, in which:

FIG. 1 is a graph representing the power spectrum of the signals generated in one particular embodiment of the invention;

FIG. 2 is a flowchart showing the main steps of one particular embodiment of a method of the present invention of generating temporal signals;

FIGS. 3 to 6 are flowcharts showing details of various operations effected to obtain a column of a matrix of the rotations of a complex Hadamard matrix in one particular embodiment of the present invention;

FIG. 7 is a flowchart illustrating the general method of the invention;

FIG. 8 is a flowchart illustrating in more detail the “band calculation” method of the FIG. 7 flowchart;

FIG. 9 is a flowchart illustrating in more detail the “band preparation” method of the FIG. 8 flowchart;

FIG. 10 is a flowchart illustrating in more detail the spectral calculation step of the FIG. 8 flowchart;

FIG. 11 is a flowchart illustrating in more detail the “exponential” step of the FIG. 10 flowchart;

FIG. 12 is a flowchart showing in more detail the prolongation calculation step from FIG. 9 in the case of complex spectra;

FIG. 13 is a flowchart illustrating in more detail the prolongation step from FIG. 10 in the case of complex spectra;

FIG. 14 is a flowchart illustrating in more detail the prolongation preparation step in the case of complex spectra;

FIG. 15 is a flowchart illustrating in more detail the prolongation step from FIG. 10 in the case of real signals;

FIGS. 16 to 19 illustrate examples of application of particular embodiments of the present invention; and

FIG. 20 represents diagrammatically a device adapted to implement one particular embodiment of the present invention.

The invention applies to discrete real or complex signals.

Notation and definitions used in the remainder of the description are introduced below.

By convention, the indices of variables begin at zero. Accordingly, a three-dimensional vector ν has three components denoted: ν[0], ν[1], ν[2]. Likewise, for matrices, m[l][c] denotes the component of line l and column c (starting at zero) of the matrix m.

The number of signals generated is denoted Ns.

The signals to be generated are denoted s(i), where 0≦i≦Ns, i being the variable that designates the number of the signal.

Each signal s(i) can be seen interchangeably either as a signal of length Ls or as an application of [0;Ls−1] ⊂ N (N being the set of natural integers), or as a vector of dimension Ls. This latter interpretation, i.e. the vectorial interpretation, is preferred here.

From the vectorial point of view, each signal s(i) is a vector of E^(LS) (the Cartesian product of the vectorial space E to the power Ls) where E is either the body of real values

(in the case of a signal with real values) or the body of complex values C (in the case of a signal with complex values). The values of the signal s(i) are denoted s(i)[n], where 0≦n<Ls, n being the variable that designates the time sample.

Hereinafter, Fourier matrices denoted F_((n)) of any order (or dimension) are used. The Fourier matrix of order n is the square matrix defined by F_((n))εC^(n×n) and

$\begin{matrix} {{{F_{(n)}\lbrack l\rbrack}\lbrack c\rbrack} = ^{2{\pi \cdot \frac{l \cdot c}{n} \cdot \sqrt{- 1}}}} & (1.1) \end{matrix}$

This matrix has the following properties: |F_((n))[l][c]|1 and

^(t)F_((n))·F_((n))=nl_((n))  (1.2)

where F_((n)) denotes the conjugate matrix of F_((n)), ^(t)F_((n)) denotes the transposed matrix of the matrix F_((n)) and l_((n)) denotes the identity matrix of order n, from which is deduced

$F_{(n)}^{- 1} = {\frac{1}{n} \cdot {{\,^{t}\overset{\_}{F_{(n)}}}.}}$

^(t) F and F are respectively the discrete Fourier transform (DFT) matrix and the inverse discrete Fourier transform matrix. The present invention uses the matrix F in two different contexts:

-   -   to transform a controlled power complex spectrum into a temporal         signal, and     -   as a real or complex basic Hadamard matrix for generating the         Hadamard matrices of any order using Kronecker products.

The problem to be solved is that of finding a family S of Ns signals such that there is a zero scalar product of two signals s(i) and s(j), denoted

s(i)|s(j)

, if i is different from j, which amounts to saying that the signals are mutually orthogonal according to the scalar product concerned.

In other words, using the mathematical notation introduced above, it is a question of finding S={s(i)} such that

s(i)|s(j)

=0

i≠j.

The usual scalar products are considered:

-   -   in the real case (E=         ):         a|b         =^(t)a.b     -   in the complex case (E=C):         (a|b         =^(t)ā.b

It is also necessary to consider the discrete complex spectra ŝ(i)εC_(Ls) defined in terms of the temporal signals s(i) as follows:

ŝ(i)=F _(Ls) ⁻¹ ·s(i)  (1.3)

In other words, the complex spectrum is obtained by applying a discrete Fourier transform to the real signal. The spectra are referred to as discrete as they come from the discrete Fourier transform of a discrete signal, i.e. a signal sampled in the time domain at a given frequency F_(e).

The power spectrum of the temporal signal is given as a function of the complex spectrum by:

P _(s)(i)[k]=|ŝ(i)[k]| ² =

ŝ(i)[k]

= ŝ (i)[k]·ŝ(i)[k]

Hereafter, the term controlled power is applied interchangeably to the temporal signal and the complex spectrum.

The matrices F_((Ls)) and ^(t) F_((Ls)) being orthogonal (equation (1.2)), the temporal signal is given as a function of the complex spectrum by:

s(i)=F _((Ls)) ·ŝ(i)  (1.4)

i.e. by the inverse discrete Fourier transform of the complex spectrum.

It is shown that a necessary and sufficient condition for the signal s(i) to be real (E=

) is that the following are satisfied:

ŝ(i)[0]= {circumflex over (s)}(i)[0] )}and ∀kε[1 . . . Ls−1]{circumflex over (s)}(i)[k]= {circumflex over (s)}(i)[Ls−k])}  (15)

In other words, for the inverse Fourier transform of a complex spectrum to be real, the complex spectrum ŝ(i) must satisfy the above property of symmetry.

Complex Hadamard matrices are square matrices H of any order d (i.e. HεC^(d×d)) having the following properties: ^(t) H.H=d.l_((d)) (orthogonality property) and |H[l][c]|=1. Note that Fourier matrices are complex Hadamard matrices. Complex Hadamard matrices also have the following properties:

-   -   if H is a complex Hadamard matrix, if P, Q are permutation         matrices, if C, D are diagonal matrices the non-zero elements of         the diagonal of which have a modulus of 1, then P.C.H.D.Q is         also a complex Hadamard matrix;     -   if G and H are two complex Hadamard matrices of respective         orders g and h, then G         H is a complex Hadamard matrix of order g.h. The operation         is the Kronecker product or tensor product.

Remember that:

(G

H)[l][c]=(G[l _(g) ][c _(g)])(H[l _(h) ][c _(h)])  (1.6)

where l=l_(g).h+l_(h) and c=c_(g).h+c_(h).

The basic principle of the solution proposed by the present invention is described next.

For the basic discrete solution, the family S of the required real signals has to satisfy the following properties:

$\quad\begin{matrix} \left\{ \begin{matrix} {{\langle\left. {s(i)} \middle| {s(i)} \right.\rangle} = 1} \\ {{\langle\left. {s(i)} \middle| {s(j)} \right.\rangle} = \left. 0\Leftrightarrow{i \neq j} \right.} \\ {{k \in \left. {\left\lbrack {S_{\min}\mspace{14mu} \ldots \mspace{14mu} S_{\max}} \right\rbrack\bigcup\left\lbrack {{Ls} - {S_{\max}\mspace{14mu} \ldots \mspace{14mu} {Ls}} - S_{\min}} \right\rbrack}\Leftrightarrow{{{\hat{s}(i)}\lbrack k\rbrack}} \right.} = \mu} \\ {{k \notin \left. {\left\lbrack {S_{\min}\mspace{14mu} \ldots \mspace{14mu} S_{\max}} \right\rbrack\bigcup\left\lbrack {{Ls} - {S_{\max}\mspace{14mu} \ldots \mspace{14mu} {Ls}} - S_{\min}} \right\rbrack}\Leftrightarrow{{\hat{s}(i)}\lbrack k\rbrack} \right.} = 0} \end{matrix} \right. & (1.7) \end{matrix}$

These properties are illustrated by the FIG. 1 graph, which represents the value of the power spectrum of the signals generated.

These properties express the fact that the temporal signals have a unitary power over one period, and that the complex spectrum of these signals is of constant modulus, μ, between a low frequency index S_(min), and a high frequency index S_(max) and zero everywhere else.

The low frequency F_(min) is linked to the index S_(min) and to the sampling frequency F_(e) as follows:

$S_{\min} = {F_{\min}\frac{Ls}{F_{e}}}$

where Ls is the number of samples of the DFT defined by the equation (1.3).

The phases are the only degrees of freedom of the system. Moreover, the signals form a free family in the space of signals of length Ls and are mutually orthogonal or, in other words, there is no correlation between them.

Note that the special case S_(min)=0 and S_(max)=Ls/2, where there is no zero sample, is taken into account in the equation (1.7) by virtue of the periodicity of the complex spectrum ŝ(i) (period Ls). The spectrum of the frequency domain signals is then perfectly blank over the whole of the band of frequencies and the orthogonal temporal signal correlation function, deduced by inverse Fourier transformation, is equal to a Dirac distribution, a property of interest in numerous applications. The temporal signals are real if the property of symmetry with conjugate complex (equation (1.5)) is satisfied.

Noting that the temporal signals are given by inverse Fourier transformation of (equation (1.4)), it can be shown that:

s(i)|s(j)

=

F _((Ls))·{circumflex over (s)}(j)

=^(t) {circumflex over (s)}(i))}·^(t) F _((Ls)) ·F_((Ls))·{circumflex over (s)}(j)=Ls(^(t) {circumflex over (s)}(i))}·{circumflex over (s)}(j)=Ls

{circumflex over (s)}(i)|{circumflex over (s)}(j)

.

The problem then amounts to the orthogonality of the signals in the domain of the complex spectra ŝ(i).

As there are zero spectrum lines outside the combined ranges [s_(m) . . . s_(max)]∪[Ls−s_(max) . . . Ls−S_(min)], it is sufficient to ensure orthogonality of the values of the discrete spectrum signals ŝ(i) for kε[S_(m) . . . S_(max)]∩[Ls−S_(max) . . . Ls−S_(min)]. The number corresponding to half the number of lines of modulus μ is denoted w=1+S_(max)−S_(min).

This operation is known as restriction, and restricts the study to non-zero values. It is denoted R:C^(Ls)→C^(2.w). The converse operation is called prolongation and is denoted P:C^(2.w)→C^(Ls).

In the real situation, it suffices to restrict for kε[S_(max) . . . S_(min)]. The remaining values, of index kε[Ls−S_(max) . . . Ls−S_(min)], are deduced from the preceding values by conjugation according to the property ŝ(i) [k]= ŝ(i)[Ls−k] of the real signals, as outlined above. In this case R:C^(LS)→C^(W) and P:C^(W)→C^(Ls).

The restriction of ŝ(i) is denoted {circumflex over (r)}(i). The dimension of the restriction ŝ(i) is denoted d_(R), i.e. {circumflex over (r)}(i)εc^(d) ^(R) . In the case of real signals d_(R)=w and in the case of complex signals d_(R)=2.w. Given {circumflex over (r)}(i)=R(ŝ(i)), what is sought is a family {circumflex over (R)}={{circumflex over (r)}(i)} of Ns vectors {circumflex over (r)}(i) such that s(i)=F_((Ls)).P({circumflex over (r)}(i)), i.e. S=F_((Ls)).P({circumflex over (R)}).

Satisfying the properties required for the s(i) lead to writing the following properties for the {circumflex over (r)}(i):

$\quad\left\{ \begin{matrix} {{{\hat{r}(i)}\lbrack p\rbrack}} & {\forall i} & {\forall p} \\ {{\langle\left. {\hat{r}(i)} \middle| {\hat{r}(j)} \right.\rangle} = 0} & \Leftrightarrow & {i \neq j} \end{matrix} \right.$

These properties or constraints are close to those of the vectors of the complex Hadamard matrices. The solution to this problem is thus obtained by choosing for the family {circumflex over (R)} a free family coming from a complex Hadamard matrix H of order d_(R) multiplied by μ.

In the same case where {circumflex over (r)}(i) corresponds to the i^(th) column of the matrix H, which is denoted {circumflex over (r)}(i)=μ.H[.][i]:

     s(i) = F_((Ls)) ⋅ P(μ ⋅ H[⋅][i]) = μ ⋅ F_((Ls)) ⋅ P(H[⋅][i]) $\mspace{79mu} {{\langle\left. {s(i)} \middle| {s(j)} \right.\rangle} = {{{Ls} \cdot \left( {{\,^{t}\left( \overset{\_}{\hat{s}(i)} \right)} \cdot {\hat{s}(j)}} \right)} = {{Ls} \cdot \left( {{\,^{t}\overset{\_}{P\left( {\hat{r}(i)} \right)}} \cdot {P\left( {\hat{r}(j)} \right)}} \right)}}}$ ${\langle\left. {s(i)} \middle| {s(j)} \right.\rangle} = {{\frac{2 \cdot {Ls} \cdot w \cdot \mu^{2}}{d_{R}} \cdot \begin{pmatrix} {{\,^{t}\overset{\_}{{H\lbrack \cdot \rbrack}\lbrack i\rbrack}} \cdot} \\ {{H\lbrack \cdot \rbrack}\lbrack j\rbrack} \end{pmatrix}} = {\frac{2 \cdot {Ls} \cdot w \cdot \mu^{2}}{d_{R}} \cdot \left\lbrack {{\left( {{\,^{t}\overset{\_}{H}} \cdot H} \right)\lbrack i\rbrack}\lbrack j\rbrack} \right\rbrack}}$      Thus: ${\langle\left. {s( i)} \middle| {s( j)} \right.\rangle} = \left. {2 \cdot {Ls} \cdot w \cdot \mu^{2} \cdot \left( {{l_{(d_{r})}\lbrack i\rbrack}\lbrack j\rbrack} \right)}\Leftrightarrow \left\{ \begin{matrix} {\left. {i \neq j}\Leftrightarrow{\langle\left. {s(i)} \middle| {s(j)} \right.\rangle} \right. = {2 \cdot {Ls} \cdot w \cdot \mu^{2}}} \\ {\left. {i \neq j}\Leftrightarrow{\langle\left. {s(i)} \middle| {s(j)} \right.\rangle} \right. = 0} \end{matrix} \right. \right.$

Dimensional analysis shows that the following conditions must be respected: Ns≦d_(R), and, in the real case, d_(R)≦½Ls, and, in the complex case, d_(R)≦Ls. These are the constraints of the system.

Synthesizing, S is a free family of μ.F.P(H), where F is the Fourier matrix, P is the prolongation deduced from S_(max) and S_(man) and H is the complex Hadamard matrix of order d_(R) deduced from S_(max) and S_(min).

How to construct a family S of temporal signals s(i) having the properties of the equation (1.7) is described above:

It suffices to find a complex Hadamard matrix H and then to take:

${{s(i)} = {{{\mu \cdot F_{({Ls})} \cdot {P\left( {{H\lbrack \cdot \rbrack}\lbrack i\rbrack} \right)}}\mspace{14mu} {where}\mspace{14mu} \mu} = \frac{1}{\sqrt{2 \cdot {Ls} \cdot w}}}},$

where P is the prolongation deduced from S_(max) and S_(min) and from the nature of E (real or complex), and

where F_((Ls)) is the Fourier matrix of order Ls, which, in other words, corresponds to the “inverse discrete Fourier transform in the complex domain”, often denoted TFD_((Ls)) ⁻¹. One of the following two definitions then often applies:

${{TFD}_{({Ls})}^{- 1}(x)} = {{{\frac{1}{Ls} \cdot F_{({Ls})} \cdot x}\mspace{14mu} {or}\mspace{14mu} {{TFD}_{({Ls})}^{- 1}(x)}} = {F_{({Ls})} \cdot {x.}}}$

This discrete Fourier transform is advantageously effected by a fast Fourier transform, an operation well known to the person skilled in the art.

This method of constructing the s(i), the basic subject matter of the present invention, is shown diagrammatically in FIG. 2.

The module 20 calculates the i^(th) column of a matrix of rotations of a complex Hadamard matrix {tilde over (H)}_(key) the generation whereof depends on a key.

The rotations are expressed by integer numbers, i.e.:

{tilde over (H)}_(key)[.][i]εZ^(d) ^(R) .

For the formula

${{z_{e}(n)} = ^{2n\frac{n}{\theta}\sqrt{- 1}}},$

the value θ goes from the entire rotation to the corresponding complex number of modulus 1.

A key is used to obtain distinct signal families.

In an application of the present invention to tattooing signal files, this provides for distinct tattooings that can be superposed without interacting.

The key is an integer number used to generate two permutations of Ns elements and twice Ns entire rotations of order θ, i.e. a number from 1 to [Ns!.θ^(N) ^(s) ]². In practice, these numbers usually being very large, the keys are used to initialize a generator for extracting the necessary information. The introduction of the key enables the introduction of a secret into the process of generating the sequences and thus of restricting the possibility of their use exclusively to holders of the key.

The module 22 transforms a vector of rotations of Z^(d) ^(R) into a discrete spectrum complex vector of C^(Ls).

The transformation depends on the nature of the signal but does not depend on i.

In the case of real signals:

$\quad\left\{ \begin{matrix} {S_{\min} \leq k \leq S_{\max}} & \Rightarrow & {{{\hat{s}(i)}\lbrack k\rbrack} = {\mu \cdot {z_{\theta}\left( {{{\overset{\sim}{H}}_{key}\left\lbrack {k - S_{\min}} \right\rbrack}\lbrack i\rbrack} \right)}}} \\ {{{Ls} - S_{\max}} \leq k \leq {{Ls} - S_{\min}}} & \Rightarrow & {{{\hat{s}(i)}\lbrack k\rbrack} = {\mu \cdot {z_{\theta}\left( \overset{\_}{{{\overset{\sim}{H}}_{key}\left\lbrack {{Ls} - S_{\min} - k} \right\rbrack}\lbrack i\rbrack} \right)}}} \\ {otherwise} & \Rightarrow & {{{\hat{s}(i)}\lbrack k\rbrack} = 0} \end{matrix} \right.$

In the case of complex signals:

$\quad\left\{ \begin{matrix} {S_{\min} \leq k \leq S_{\max}} & \Rightarrow & {{{\hat{s}(i)}\lbrack k\rbrack} = {\mu \cdot {z_{\theta}\left( {{{\overset{\sim}{H}}_{key}\left\lbrack {k - S_{\min}} \right\rbrack}\lbrack i\rbrack} \right)}}} \\ \begin{matrix} {{{Ls} - S_{\max}} \leq} \\ {k \leq {{Ls} - S_{\min}}} \end{matrix} & \Rightarrow & {{{\hat{s}(i)}\lbrack k\rbrack} = {\mu \cdot {z_{\theta}\left( {{{\overset{\sim}{H}}_{key}\begin{bmatrix} {k + {2 \cdot S_{\max}} +} \\ {1 - {Ls} - S_{\min}} \end{bmatrix}}\lbrack i\rbrack} \right)}}} \\ {otherwise} & \Rightarrow & {{{\hat{s}(i)}\lbrack k\rbrack} = 0} \end{matrix} \right.$

In the case limited to generation of mutually orthogonal complex spectra, the procedure terminates at this stage.

The complex spectrum ŝ(i) can be used as such, as shown in FIG. 2 by an exit arrow from the algorithm.

Otherwise, mutually orthogonal temporal signals are generated by the module 24, which transforms a complex vector ŝ(i) in C^(Ls) and with controlled spectrum into a controlled discrete spectrum time vector of E^(LS).

The module 24 is a module for application of an inverse discrete Fourier transform of order Ls. This operation is well known to the person skilled in the art. It does not depend on i.

The operations effected by the module 20 for calculating {tilde over (H)}_(key)[.][i] are described in detail below.

As stated above, this module calculates a column of the matrix {tilde over (H)}_(key). This has the advantage of avoiding construction of the complex matrix and therefore of simplifying and accelerating the calculations.

Formally, the matrix of the rotations is expressed as follows:

${{\overset{\sim}{H}}_{key} = {\frac{\theta}{2\pi \sqrt{- 1}} \cdot {\ln \left( H_{key} \right)}}},{{{where}\mspace{14mu} H_{key}} = {R_{{key},{line}}P_{{key},{line}}{H_{ref} \cdot P_{{key},{col}}}R_{{key},{col}}}},$

where:

-   -   P_(key,line) and P_(key,col) are the permutation matrices         corresponding to the permutations σ_(key,line) and σ_(key,col);     -   R_(key,line) and R_(key,col) are diagonal matrices of rotations         (of lines and columns) that correspond to the rotations         R_(key,line)[X][X]=z_(θ)(ρ_(key,line)(X)) and         R_(key,col)[X][X]=z_(θ)(ρ_(key,col)(X)). In practice, any         rotations can be used and not only rotations of order θ, i.e.         the matrices R_(key,line) and R_(key,col) can also be defined as         the diagonal matrices

${{R_{{key},{col}}\lbrack X\rbrack}\lbrack X\rbrack} = {^{2\pi {\sqrt{- 1} \cdot {\rho_{{key},{col}}{(x)}}}}.}$

and

${{R_{{key},{row}}\lbrack X\rbrack}\lbrack X\rbrack} = ^{2\pi {\sqrt{- 1} \cdot {\rho_{{key},{row}}{(x)}}}}$

In practice, the application of the rotations is optional;

-   -   H_(ref) is the reference complex Hadamard matrix canonically         constructed by the method as a function of d_(R);     -   θ is the smallest order of the root of the unity that enables         the rotations to be expressed by integers.

The calculation becomes:

$\begin{matrix} \left\{ \begin{matrix} {{{{\overset{\sim}{H}}_{key}\lbrack l\rbrack}\lbrack c\rbrack} = {{{{\overset{\sim}{H}}_{ref}\left\lbrack {\sigma_{{key},{line}}(l)} \right\rbrack}\left\lbrack {\sigma_{{key},{col}}(c)} \right\rbrack} + {\rho_{{key},{line}}(l)} + {\rho_{{key},{col}}(c)}}} \\ {{{\overset{\sim}{H}}_{ref} = {\frac{\theta}{2\pi \sqrt{- 1}} \cdot {\ln \left( H_{ref} \right)}}}\mspace{405mu}} \end{matrix} \right. & (1.8) \end{matrix}$

The expression of the auxiliary functions σ_(key,line) and σ_(key,col) and ρ_(key,line) and ρ_(key,col) is trivial. The permutations can be effected by scrambling algorithms well known in cryptography for example and the rotations can be initialized by a random function for introducing a secret.

In the context of the description of the method, it is assumed that these auxiliary functions have been calculated and are known.

The number d_(R), which represents the order of the reference complex Hadamard matrix H_(ref) is written as a product of numbers. DF(d_(R))={f_(i)} denotes a decomposition of d_(R) into a product of factors f_(i) (accordingly,

$d_{R} = {\prod\limits_{f_{i} \in {{DF}{(d_{R})}}}f_{i}}$

that is ordered arbitrarily according to an index i varying from 1 to Nf, where Nf denotes the number of factors of the decomposition of d_(R), i.e. Nf=|DF(d_(R))|. In practice, a decomposition into prime factors can be taken for DF.

For example, d_(R)=100

DF(d_(R))={2; 2; 5; 5} and Nf=4.

The reference complex Hadamard matrix H_(ref) constructed by the method is defined as follows:

$\begin{matrix} {H_{ref} = {{F_{(f_{1})} \otimes F_{(f_{2})} \otimes \mspace{14mu} \ldots \mspace{14mu} \otimes F_{(f_{N\; f})}} = {\underset{1 \leq i \leq {Nf}}{\otimes}F_{(f_{i})}}}} & (1.9) \end{matrix}$

The basic matrices F_((f) _(i) ₎, i=1, . . . , Nf can be Fourier matrices as defined above. More generally, complex Hadamard matrices of size f_(i) can be used. The generation of H_(ref) by a Kronecker product from basic matrices can be exploited if, to effect the calculations with minimum complexity, the scalar product of all complex spectra by a vector x is required, i.e.

ŝ(i)|x

i=0, . . . , Ns−1. The result of this is an algorithm of complexity d_(R) log₂d_(R) having a structure close to that of the Hadamard transform.

According to the definition of H_(ref) by the equation (1.9), the order of the root of the unity is the lowest common multiple of the set of factors of d_(R), whence θ=ppcm(DF(d_(R)))=ppcm({f_(i)}). For example, θ(100)=10.

If the decomposition of d_(R) into prime factors is taken for DF, this approach has the advantage that θ is as small as possible, which means that the phases of the complex spectrum are as far apart as possible. Incidentally, this increases robustness to noise.

The calculation of the matrices of integers {tilde over (H)}_(ref)[l][c] relies on the fact that a number n such that 0≦n<d_(R) is decomposed uniquely in the number system deduced from DF(d_(R)), namely:

$n = {{\sum\limits_{1 \leq i \leq {Nf}}\left( {n_{i} \cdot {\prod\limits_{1 \leq j < i}f_{j}}} \right)} = {{\sum\limits_{1 \leq i \leq {Nf}}{n_{i} \cdot b_{i}}} = {n_{1} + {f_{1} \cdot \left( {n_{2} + {f_{2} \cdot \left( {n_{3} + \ldots} \right)}} \right)}}}}$ where ${0 \leq n_{i} < {f_{i}\mspace{14mu} {and}\mspace{14mu} b_{i}}} = {\prod\limits_{1 \leq j < i}{f_{j}.}}$

This in fact constitutes a generalization of the equation (1.6) to the case of the decomposition of d_(R) into a product of factors.

Accordingly, having defined, i.e. decomposed the line number

$1 = {\sum\limits_{1 \leq i \leq {Nf}}{l_{i} \cdot b_{i}}}$

and the column number

${c = {\sum\limits_{1 \leq i \leq {Nf}}{c_{i} \cdot b_{i}}}},$

there is obtained, following the following calculations:

$\begin{matrix} {{{{\overset{\sim}{H}}_{ref}\lbrack l\rbrack}\lbrack c\rbrack} = {\frac{\theta}{2{\pi \cdot \sqrt{- 1}}}{\ln \left( {{H_{ref}\lbrack l\rbrack}\lbrack c\rbrack} \right)}}} \\ {= {\frac{\theta}{2{\pi \cdot \sqrt{- 1}}}{\ln\left( {{\left\lbrack {\underset{1 \leq i \leq {Nf}}{\otimes}F_{(f_{i})}} \right\rbrack \lbrack l\rbrack}\lbrack c\rbrack} \right)}}} \end{matrix}$ $\begin{matrix} {{{{\overset{\sim}{H}}_{ref}\lbrack l\rbrack}\lbrack c\rbrack} = {\frac{\theta}{2{\pi \cdot \sqrt{- 1}}}{\ln\left( {\prod\limits_{1 \leq i \leq {Nf}}{{F_{(f_{i})}\left\lbrack l_{i} \right\rbrack}\left\lbrack c_{i} \right\rbrack}} \right)}}} \\ {{= {\frac{\theta}{2{\pi \cdot \sqrt{- 1}}}{\sum\limits_{1 \leq i \leq {Nf}}{\ln\left( ^{{\frac{l_{i} \cdot c_{i}}{f_{i}} \cdot 2}\pi \sqrt{- 1}} \right)}}}},} \end{matrix}$ ${{{\overset{\sim}{H}}_{ref}\lbrack l\rbrack}\lbrack c\rbrack} = {\sum\limits_{1 \leq i \leq {Nf}}{{\frac{\theta}{2{\pi \cdot \sqrt{- 1}}} \cdot \frac{l_{i} \cdot c_{i}}{f_{i}} \cdot 2}\pi \sqrt{- 1}}}$

the required value:

${{{\overset{\sim}{H}}_{ref}\lbrack l\rbrack}\lbrack c\rbrack} = {\sum\limits_{1 \leq i \leq {Nf}}{\left( \frac{\theta}{f_{i}} \right){l_{i} \cdot {c_{i}.}}}}$

The factor

$\frac{\theta}{f_{i}}$

being an integer, {tilde over (H)}_(ref) is a matrix of integers, which is what was required.

FIG. 3 shows the organization of the process for calculating the i^(th) column of the matrix of the rotations {tilde over (H)}_(key)[.][i].

The preparation step 300 consists in:

a) calculating the decomposition of d_(R) into a product of factors f_(i) denoted DF(d_(R))={f_(i)};

b) calculating the lowest common multiple of the set DF(d_(R)), denoted θ=ppcm(DF(d_(R)));

c) using the key to calculate the auxiliary functions σ_(key,line), σ_(key,col), σ_(key,col) and σ_(key,line).

The step 302 effects the permutation σ_(key,col)(i) and then calculates {tilde over (H)}_(ref)[.][σ_(key,col)(i)] directly. The contribution of the rotations according to the equation (1.8) is added to this latter matrix in the step 304.

The FIG. 4 flowchart illustrates an elementary example of the execution of the operations a) and b).

During an initialization step 400, a variable n is initialized to the value d_(R), a variable D to the value 2, a variable i to the value 0 and a variable θ to the value 1.

A test 402 is then effected to verify if n is congruent with zero modulo D, i.e. if n is a multiple of D.

If the result of the test 402 is negative, there follows a test 404 for verifying if n has the value 1.

If the result of the test 404 is negative, the value of the variable D is increased by one unit (step 406) and there is a return to the test 402. If the result of the test 404 is positive, the value of i (step 408) is assigned to the variable Nf, which denotes the number of factors of the decomposition of d_(R), and the algorithm terminates.

If the result of the test 402 is positive, a test 410 is effected that verifies if θ is congruent with zero modulo D.

If the result of the test 410 is negative, the variable θ is assigned the value of the variable D.θ (step 412) and there follows the step 414. If the result of the test 410 is positive, the process goes directly to step 414.

The step 414 assigns to the variable n the value of the variable n/D, incrementing the value of the variable i by one unit and assigning the variable f_(i) the value of the variable D. This is followed by a return to the test 402.

Returning to FIG. 3, the operation 302 of calculating the column {tilde over (H)}_(key)[.][σ_(key,col)(i)] calculates

${{{\overset{\sim}{H}}_{ref}\lbrack l\rbrack}\lbrack c\rbrack} = {\sum\limits_{1 \leq j \leq {Nf}}{\left( \frac{\theta}{f_{j}} \right){l_{j} \cdot c_{j}}}}$ where c = σ_(key, col)(i).

The FIG. 5 flowchart is an elementary example of the implementation of this step.

The values of l_(j) and c_(j) are calculated progressively.

Accordingly, during an initialization step 500, a variable l is initialized to the value 0 and a variable c is initialized to the value of the auxiliary function σ_(key,col)(i).

A test 502 then verifies if l=d_(R). If the result of the test 502 is positive, the algorithm terminates. Otherwise, a variable j is initialized to the value 1 and a variable a to the value 0 (step 504).

A test 506 then verifies if j>Nf, where Nf denotes the number of prime factors of d_(R). If the result of the test 506 is positive, the value of the variable is assigned to the variable {tilde over (H)}_(ref)[l][c] (step 508), the value of the variable l is incremented by one unit (step 510) and the process returns to the test 502.

If the result of the test 506 is negative, the value of

$\left\lfloor \frac{l}{f_{j}} \right\rfloor$

(the symbol └.┘ designates the integer part) is assigned to the variable x and l_(j)=l−x.f_(j) is calculated (step 512).

The value of

$\left\lfloor \frac{c}{f_{j}} \right\rfloor$

is then assigned to the variable y and c_(j)=c−y.f_(j) is calculated (step 514).

The next step 516 assigns the value of

$a + {\frac{\theta}{f_{j}} \cdot c_{j} \cdot l_{j}}$

to the variable a.

Then, during the step 518, the value of the variable j is incremented by one unit, the value of the variable x is assigned to the variable l, and the value of the variable y is assigned to the variable c.

There follows a return to the test 506.

Returning to FIG. 3, the operation 304 calculates the column {tilde over (H)}_(key)[.][i] by calculating:

{tilde over (H)} _(key) [l][i]={tilde over (H)} _(ref)[σ_(key,line)(l)][σ_(key,line)(i)]+ρ_(key,line)(l)+ρ_(key,col)(i).

The FIG. 6 flowchart shows one implementation of this operation.

As FIG. 6 shows, the initialization step 600 consists firstly in initializing a variable l to the value 0, a variable c to the value of the auxiliary function σ_(key,col)(i), a variable h to the value of {tilde over (H)}_(ref)[.][c] and a variable r to the value of the auxiliary function ρ_(key,col)(i).

Then, during a test 602, it is verified if l=d_(R). If the result of this test is positive, the algorithm terminates. Otherwise, the variable {tilde over (H)}_(key)[l][i] is assigned the value of the expression r+h[σ_(key,line)(l)]+ρ_(key,line)(l) (step 604).

The value of the variable l is then incremented by one unit (step 606) followed by returning to the test 602.

There is described next how the basic method of the present invention described above for generating mutually orthogonal temporal signals is applied generally.

It was shown hereinabove that the basic method generates mutually orthogonal temporal signals or complex spectra according to a power spectrum template represented in FIG. 1. This approach was didactic and was used to explain the basic operation: the generation of {tilde over (H)}_(key)[l][i].

In its most general form, the present invention generates families S={s(i)} of mutually orthogonal discrete signals of the evolution space A of the system:

A=(E ^(Y) ¹ ^(xY) ² ^(x . . . xY) ^(x) )^(Z) ¹ ^(xZ) ² ^(x . . . xZ) ^(T) =E ^(Y) ¹ ^(xY) ² ^(x . . . xY) ^(X) ^(xZ) ¹ ^(xZ) ² ^(x . . . Z) ^(T)

having X real spatial dimensions (E=

) or complex spatial dimensions (E=C) and T time dimensions and the family Ŝ={ŝ(i)} of their mutually orthogonal complex spectra in:

(C ^(Y) ¹ ^(xY) ² ^(x . . . xY) ^(x) )^(Z) ¹ ^(xZ) ² ^(x . . . xZ) ^(T) =C ^(Y) ^(z) ^(xY) ² ^(x . . . xY) ^(X) ^(xZ) ¹ ^(xZ) ² ^(x . . . Z) ^(T)

according to spectral constraints that will become apparent during the description of the method in its widest sense.

The set of positive or zero integers less than n is denoted [n] ([n]={0; 1; 2; . . . ; n−2; n−1}).

The set Q of coordinates of the system, i.e. the elements of Q are coordinates, is denoted Q=[Y₁]x . . . x[Y_(x)]x[Z₁]x . . . x[Z_(T)]=[q₀]x . . . x[q_(x+T−1)] For practical reasons, q_(i) are defined in corresponding relationship with the dimensions Y_(i) and Z_(i) of the system. Q defines the dimensions of the system: |Q|, its number of elements or coordinates is the number of freedoms of the system A.

The set Q expresses the values of a signal f of A as a function of Q in E, i.e. f:Q→E; x→f(x). In other words, a signal is similar to f, an element of the set of the functions of Q in E, denoted F(Q,E), i.e. fεF(Q,E). The set F(Q,E) is known to be a vectorial space and therefore, as before, the signals f are like the vectors of the vectorial space F(Q,E).

From the definition of the complex spectra in the Fourier domain, for any signal f of F(Q,E):

${f\lbrack k\rbrack} = {\sum\limits_{x \in Q}\left( {{\hat{f}\lbrack x\rbrack} \cdot {\prod\limits_{i \in {\lbrack{X + T}\rbrack}}{{F_{(q_{i})}\left\lbrack {k\lbrack i\rbrack} \right\rbrack}\left\lbrack {x\lbrack i\rbrack} \right\rbrack}}} \right)}$ and $\begin{matrix} {{\hat{f}\lbrack x\rbrack} = {\sum\limits_{k \in Q}\left( {{f\lbrack k\rbrack} \cdot {\prod\limits_{i \in {\lbrack{X + T}\rbrack}}{{F_{(q_{i})}^{- 1}\left\lbrack {k\lbrack i\rbrack} \right\rbrack}\left\lbrack {x\lbrack i\rbrack} \right\rbrack}}} \right)}} \\ {= {\frac{1}{\prod\limits_{i \in {\lbrack{X + T}\rbrack}}q_{i}} \cdot {\sum\limits_{k \in Q}\left( {{f\lbrack k\rbrack} \cdot {\prod\limits_{i \in {\lbrack{X + T}\rbrack}}{{{\overset{\_}{F}}_{(q_{i})}\left\lbrack {k\lbrack i\rbrack} \right\rbrack}\left\lbrack {x\lbrack i\rbrack} \right\rbrack}}} \right)}}} \end{matrix}$

The set of parts of Q(QP=

(Q)), i.e. the set that contains all the subsets of Q, is denoted QP.

Let G={cg_(a)=(g_(a),key_(a))/g_(a)εQP and aε[n]} be a family of n parts g_(a) of Q that are mutually separate, i.e. such that if a≠b then g_(a)∩g_(b)=Ø. The parts g_(a) are called “bands”. They are associated with a key key_(a), which may be unique, for generating a wide variety of families of weakly correlated signals.

G is the definition of the constraints of the system: each constraint cg_(a)=(g_(a),key_(a)) expresses which spatio-temporal frequencies constitute the band g_(a); frequencies outside g_(a) have a zero amplitude.

The method in the most general sense creates n families S_(a)={s_(a)(i)} of signals and their versions Ŝ_(a)={ŝ_(a)(i)} in the Fourier domain, having spectra complying with the constraints determined by G and formalized by the following properties:

1. the spectrum of a family S_(a) is controlled by its band g_(a), i.e.

$\begin{matrix} {{\forall{a \in \lbrack n\rbrack}},{\forall{i \in {S_{a}}}},{\forall{k \in {Q\left\{ \begin{matrix} {k \in g_{a}} & {\left. \Leftrightarrow{{{\hat{s}(i)}\lbrack k\rbrack}} \right. = \mu_{a}} \\ {k \notin g_{a}} & {{\left. \Leftrightarrow{{{\hat{s}(i)}\lbrack k\rbrack}} \right. = 0}\mspace{11mu}} \end{matrix} \right.}}}} & (1.10) \end{matrix}$

2. the families are decorrelated with each other, i.e.

∀(a,b)ε[n]²,a≠b

(∀fεS_(a), ∀_(g)εS_(b),

f|g

=0 and

{circumflex over (f)}|ĝ

=0)

3. the signals of a family are decorrelated with each other, i.e.

∀aε[n],∀(i,j)ε|S _(a)|² ,

s _(a)(i)|s _(a)(j)

=0

ŝ _(a)(i)|ŝ _(a)(j)

=0

i≠j

4. the power of a signal is controlled, i.e.

∀aε[n],∀iεS _(a) ,

s _(a)(i)|s _(a)(i)

=1

From families S_(a)={s_(a)(i)} of signals and Ŝ_(a)={ŝ_(a)(i)} of their complex spectra, the method generates a family S={s(i)} of (decorrelated) mutually orthogonal signals and the family Ŝ={ŝ(i)} of their complex spectra, which are themselves orthogonal and have any independent power spectrum in each of the bands g_(a).

From the families S={s_(a)(i)} of signals and Ŝ_(a)={ŝ_(a)(i)} of their complex spectra, the method generates a family S={s(i)} of signals using two different methods, the choice between which depends on the intended use of the family S:

-   -   bands are mutually dependent, which signifies that orthogonality         in one band implies orthogonality in the other bands, and thus         that the signals of the family S are mutually orthogonal;     -   bands are independent of each other, which signifies that the         signals of the families S_(a) can be combined without         restriction and implies that the signals of the family S are not         always orthogonal in pairs.

The FIG. 7 flowchart illustrates the most general form of the method of the present invention.

The constraint G is segmented into its constraints for each band cg₀, cg₁, cg₂, etc. Each band g_(a) gives rise to the generation (via the modules 70, 71, 72, etc.) of a signal s_(a)(i) and its variant ŝ(i) in the Fourier domain, having a controlled spectrum. The signals created in this way are multiplied (via the modules 700, 701, 702, etc.) with a factor c_(a) that controls the power of the signal in that band. The signals are then summed in a module 7000 to give the required complex spectrum ŝ(i,c) and/or signals s(i,c). The factors c_(a) can be modified without changing the orthogonality (no correlation) of the spectra and signals, modifying only the balancing of the power of the signals ŝ(i,c) and s(i,c).

The general method shown in FIG. 7 uses the “band calculation” method (in the modules 70, 71, 72, etc.).

Band calculation is illustrated in more detail in the FIG. 8 flowchart. It includes a “band preparation” step 80 for determining once and for all the generation parameters used by the “spectrum calculation” method illustrated by the block 82.

The spectrum calculation method generates the complex spectrum Ŝ_(a)(i) of the i^(th) signal from the band g_(a). The signal s(i) is simply obtained at the output of the module 84 by inverse discrete Fourier transformation of its complex spectrum Ŝ_(a)(i) using the formula

${{{s(i)}\lbrack k\rbrack} = {\sum\limits_{x \in Q}\left( {{{\hat{s}(i)}\lbrack x\rbrack} \cdot {\prod\limits_{\alpha \in {\lbrack{X + T}\rbrack}}{{{F\left( q_{a} \right)}\left\lbrack {k\lbrack\alpha\rbrack} \right\rbrack}\left\lbrack {x\lbrack\alpha\rbrack} \right\rbrack}}} \right)}},$

possibly optimized using standard fast Fourier transform techniques.

The band preparation step is illustrated in more detail in the FIG. 9 flowchart. This mechanism consists of a “prolongation calculation” module 90 which determines, as a function of the constraint cg_(a) and the dimensions of the system, the dimension d_(a,R) of the Hadamard matrices (and thus the maximum number of signals in the family) and the prolongation data prlg_(a) used for the prolongation. The preparation module 300 is that described above with reference to FIGS. 3 and 4.

The FIG. 10 flowchart shows in more detail the organization of the spectrum calculation step executed by the block 82 from FIG. 8. This step comprises:

-   -   the step 302 of calculating {tilde over         (H)}_(ref)[.][σ_(a,key,col)(i)] illustrated in FIG. 3 and         explained with reference to FIG. 5;     -   the step 304 of calculating {tilde over (H)}_(a,key)[.][i]         illustrated in FIG. 3 and explained with reference to FIG. 6;     -   an “exponential” step 106 that calculates the complex numbers         corresponding to the calculated rotations and normalizes them by         a scaling factor to obtain the controlled power property; the         formula is:

${{{H_{a,{key}}\lbrack l\rbrack}\lbrack i\rbrack} = {\mu_{a} \cdot ^{\frac{2\pi \sqrt{- 1}}{\theta}{{{\overset{\_}{H}}_{a,{key}}{\lbrack l\rbrack}}{\lbrack i\rbrack}}}}};$

this step is illustrated in more detail in FIG. 11;

-   -   a prolongation step 108 for constructing the required controlled         power complex spectrum ŝ_(a)(i).

As FIG. 11 shows, an initialization step 110 firstly initializes a variable l to the value 0. This is followed by a test 112 that verifies if the value of the variable l has reached the maximum number d_(a,R) of signals in the family. If so, the procedure terminates. If not, then

${{H_{a,{key}}\lbrack l\rbrack}\lbrack i\rbrack} = {\mu_{a} \cdot ^{\frac{2\pi \sqrt{- 1}}{\theta}{{{\overset{\_}{H}}_{a,{key}}{\lbrack l\rbrack}}{\lbrack i\rbrack}}}}$

is calculated during a step 114, after which the variable l is incremented by one unit (step 116) and the process returns to the test 112.

The prolongation operation 108 (FIG. 10) and the prolongation calculation operation 90 (FIG. 9) differ according to the nature of the signal required, i.e. according to whether a real signal (E=

) or a complex signal (E=C) is required.

The FIGS. 12 and 13 flowcharts show the steps of the calculation in the case of complex signals. This is the simplest case because there are no symmetry constraints.

FIG. 12 illustrates in more detail the step 90 of calculating the prolongation of FIG. 9 in the case of complex signals. During a step 120, the value of the band g_(a) is assigned to the variable prlg_(a). Then, during a step 122, the value of |g_(a)| is assigned to the variable d_(a,R). There is then calculated

$\mu_{a} = \frac{1}{\sqrt{{Q} \cdot d_{a,R}}}$

(step 124), which terminates the procedure. Conforming to the controlled power property, i.e.

s_(a)(i)|s_(a)(i)

=1, in fact amounts to setting

$\mu_{a} = {\frac{1}{\sqrt{{Q} \cdot d_{a,R}}}.}$

FIG. 13 illustrates in more detail the prolongation step 108 from FIG. 10 in the case of complex spectra. During a first step 130, the variable ŝ(i)[.] is initialized to the value 0 and during a step 132 a variable l is initialized to the value 0. This is followed by a test 134 to verify if the variable l is equal to d_(a,R). If so, the procedure terminates. If not, then ŝ(i) [prlg_(a)[k]]=H_(a,key)[l][i] is calculated during a step 136. The value of l is then incremented by one unit (step 138) after which the process returns to the test 134.

In the case of real signals, it is necessary that s_(a)(i)= s_(a)(i). This is true when ∀kεQ, ŝ_(a)(i)[{circumflex over (k)}]= ŝ_(a)(i)[k]. This definition uses the definition of the conjugate of the coordinate k. This one-to-one relationship of Q in Q is defined in the following fashion:

k=(k ₀ , k ₁ , . . . , k _(X+T−1))

k =( k ₀ , k _(s) , . . . , k _(X+T−S))

where

$\left\{ {\quad\begin{matrix} {{k_{i} = {\left. 0\Leftrightarrow{\overset{\_}{k}}_{i} \right. = 0}}\mspace{59mu}} \\ {\left. {k_{i} \neq 0}\Leftrightarrow{\overset{\_}{k}}_{i} \right. = {q_{i} - {k_{i}.}}} \end{matrix}} \right.$

It is seen that k_(i)=k_(i) and q_(a) even

q_(i)/2= q_(i)/2.

This constraint is taken into account during the “prolongation preparation” step illustrated in detail by the FIG. 14 flowchart.

To start with d_(a,R) is initialized to the value 0 (step 140), the prolongation data prlg_(a) is initialized to the empty set (step 142), and the variable l is initialized to the value 0 (step 144).

There follows a test 146 to verify if l=|g_(a)|. If so, then

$\mu_{a} = \frac{1}{\sqrt{2 \cdot {Q} \cdot d_{a,R}}}$

is calculated (step 148) and the procedure terminates. If not, the value of g_(a)[l] is assigned to the variable k (step 150). It will be noted that the value of μ_(a) is different according to whether the signals are real or complex.

Then a test 152 determines if k=k. If so, the value of the variable l is incremented by one unit (step 154) after which the process returns to the test 146. If not, then it is verified if kεprlg_(a) (test 156). If so, there follows the step 154. If not, a test 158 determines if kεprlg_(a). If so, there follows the step 154. If not, k is added to the prolongation data (step 160), the value of d_(a,R) is incremented by one unit (step 162), and there follows the step 154.

This preparation of the prolongation eliminates the elements of g_(a) that are undesirable. Thus the dimension d_(a,R), can have a different value from |g_(a)|.

The prolongation in the case of real signals is illustrated by the FIG. 15 flowchart. The procedure is identical to that of the complex case illustrated in FIG. 13 for the steps 130 to 136 described above. In the case of real signals, the step 136 is furthermore followed by a step 164 that calculates ŝ_(a)(i)[prlg_(a)[ k]]= H_(a,key)[l][i]. The variable l is then incremented by one unit (step 166) after which the process returns to the test 134.

This procedure provides the property necessary for the real signals: ∀kεQ, ŝ_(a)(i)[k]= ŝ_(a)(i)[{overscore (k)}]. In this case, calculation shows that the factor μ_(a) must have the value

$\mu_{a} = {\frac{1}{\sqrt{2 \cdot {Q} \cdot d_{a,R}}}.}$

The maximum number of signals in the family S generated according to G is given depending on the usage:

-   -   in the case of mutual dependency of the bands, which means that         orthogonality in one band implies orthogonality in the other         bands,

${{S} = {{\min\limits_{a \in {\lbrack n\rbrack}}{S_{a}}} = {\min\limits_{a \in {\lbrack n\rbrack}}d_{a,R}}}};$

-   -   in the case of mutual independence of the bands

${S} = {{\prod\limits_{a \in {\lbrack n\rbrack}}{S_{a}}} = {\prod\limits_{a \in {\lbrack n\rbrack}}{d_{a,R}.}}}$

The invention finds applications in numerous fields. A first example concerns tattooing audio files.

Orthogonal signals are also very useful for transmission, being adapted to orthogonal, bi-orthogonal and CDMA modulation. FIG. 16 shows, by way of nonlimiting example, that the method of the invention produces temporal signals or their Fourier variants with controlled discrete spectra at the message modulation level. On demodulation, the data received from the transmission channel is processed to reconstitute the messages sent. The FIG. 16 method can be used to feed a read-only memory (ROM), which avoids having the process on board.

In FIG. 16, the binary message is modulated (in a block 1600) by the signal assigned to the user #i for whom the binary data is intended. The signal is then processed to be sent over the mobile radio channel 1602. On reception, the user #i effects the correlation of the received signal (block 1604). Because the signals are orthogonal, user #i detects only data intended for him/her in the stream he/she receives.

These signals can also be used in metrology, to optimize the excitation data to be supplied to the system under study, as shown in FIG. 17. This increases the relevance of the result of the measurements effected on the system under study. The FIG. 17 method can be used to feed a ROM, which avoids having the process on board.

A typical case of using metrology is that of measuring the impulse response of acoustic rooms.

To effect this measurement, a loudspeaker emits a long periodic signal sequence in which each period has a flat spectrum or a controlled spectrum, as appropriate. The periodic signal is filtered by the impulse response of the room. The signal is recovered by a microphone for processing. The percussive response of the room is obtained by establishing the intercorrelation of the signal received by the microphone and the sequence emitted.

To obtain an accurate room response, it is necessary for the sequence emitted to have a correlation function equal to a Dirac distribution. This is precisely the case of the temporal signals that are the subject of the present invention.

Correlation is effected by taking a sequence twice the size of that of the required impulse response. An efficient way to effect the correlation is to apply a discrete Fourier transform to the received signal, to multiply the frequency domain signal obtained by the conjugate complex of the Fourier transform of the orthogonal sequence, and to effect an inverse fast Fourier transform of the resulting signal. As the signals are generated in the spectral domain, it suffices to store in ROM the frequency domain version of the sequence.

These signals can also be used as a basis for signal coding or representation.

For example, these signals can be used in audio digital coding as shown by way of example in FIG. 18. The use of orthogonal complex spectra in the frequency domain enables direct coding of speech or audio signals in that domain.

As the complex spectra used have a controlled frequency extent, the quantizing noise can be shaped so that the noise faithfully tracks the masking curve over the specified bands of frequency.

The coding device illustrated in FIG. 18 includes a dictionary in which the complex spectra generated by the method of the invention are stored. This type of dictionary is used in coding or decoding audio signals to carry out the quantization and inverse quantization steps.

In one particular example, the signals are generated by Kronecker products of basic matrices, and the scalar product of the signal to be quantized by all the waveforms from the dictionary can then be achieved efficiently by a fast algorithm using butterflies, like the fast Fourier transform (FFT) or the real Hadamard transform.

For a matrix of dimension Ns generated by Kronecker products in accordance with the equation (1.9), the bit rate per sample is given by:

Bit rate=log₂(Ns)/Ns

For the usual values of Ns of around 10, this bit rate will be fairly low. To increase it, the dictionary is enlarged by taking different matrices as the generator matrices. For example, for an order 2, there are 64 possible basic matrices, the elements of each matrix being orthogonal and chosen from (1, −1, i, −i).

To be more precise, FIG. 18 illustrates the use of the mutually orthogonal complex spectra in a predictive temporal coder.

The contribution from filtering a sent signal s_(e)(n) with zero excitation (block 180) is first subtracted from the signal (subtractor 182) to yield the target t. The target {circumflex over (t)} in the frequency domain is obtained by the fast Fourier transform of t (block 184). The complex samples of the signal are quantized by a quantizer 186 defined by a dictionary containing the Ns orthogonal complex vectors ŝ(0), . . . , ŝ(Ns−1).

Operations that are the inverse of those just described are effected after passage through a transmission channel 188, finally yielding a received signal s_(rec)(n).

Quantization amounts to minimizing the following criterion:

E _(s) =∥{circumflex over (t)}−ghŝ(i)∥² i=0, . . . , Ns−1

where h is a diagonal matrix for perceptual weighting in the frequency domain and g designates the normalization gain.

By minimizing E_(i) there is obtained (where here ^(T) designates the transposed matrix):

$g = \frac{{\hat{t}}^{T}h^{T}{\hat{s}(i)}}{{\hat{s}(i)}^{T}h^{T}h{\hat{s}(i)}}$

and the index i_(opt) that minimizes the error criterion is given by:

$i_{{opt}\;} = {{Arg}\left\{ {{{{{Max}\left( \frac{\left\lbrack {{\hat{t}}^{T}h^{T}{\hat{s}(i)}} \right\rbrack^{2}}{{\hat{s}(i)}^{T}h^{T}h{\hat{s}(i)}} \right)}\mspace{14mu} i} = 0},\ldots \mspace{14mu},{{Ns} - 1}} \right\}}$

The numerator is equal to the scalar product of {circumflex over (t)}^(T)h^(T) by all the waveforms from the dictionary generated by a Kronecker product of elementary matrices for which an efficient “Hadamard transform” type algorithm is produced. The resulting structure is based on a butterfly structure analogous to that of the FFT.

In the particular case where the normalization gain g is known, calculating the optimum index amounts to calculating the index i_(opt) that maximizes [{circumflex over (t)}^(T)ŝ(i)]².

One particular example of use is segmenting the spectrum into contiguous or non-contiguous frequency bands of variable length, possibly with areas of zero amplitude at high frequencies.

In the first case, for example, the whole of the spectrum can be coded with increasing frequency zones, or frequency zones of increasing perceptual importance (deduced in this case from the scaling factors), by means of families of complex orthogonal spectra as represented in FIG. 18, each zone of the spectrum being quantized by a matrix generated by Kronecker products. The scalar product calculations involved in quantization are effected by fast transforms using the structure of the matrices. A hierarchical binary train can thus be obtained progressively, a required property for signal compression.

FIG. 19 represents an example of use of the mutually orthogonal signals in the case of audio tattooing. The complex spectra or signals are generated as described above, the method illustrated being either on board or functioning “offline”, the signals being stored once and for all in a ROM.

To transmit a binary message of index i, the signal of index i is filtered and modulated (block 190) and the result of this operation is added to the audio signal (adder 192).

Following transmission (block 194), on reception, resynchronization is effected first and then correlation (block 196) between the received signal and all the signals from the reception dictionary. The signal detected is that which gives the maximum correlation.

The fact that the signals are controlled spectrum signals avoids unnecessary interference with the signal by inserting the potentially audible mark into zones of the spectrum which are not transmitted by the codecs anyway.

Using the signals obtained in accordance with the invention in the digital filtering domain could further be envisaged.

FIG. 20 illustrates a device 200 using the method of the invention.

This device can be a microcomputer 200, for example, connected to various peripherals, at least some of which are adapted to supply information to be processed in accordance with the invention.

The device 200 can include a communication interface 2000 connected to a network (not shown). The device 200 also includes storage means 2002 such as a hard disk. It can also include a reader 2004 for information media such as diskettes, CD-ROMs or memory cards 2006. The information medium 2006 and the storage means 2002 can contain software implantation data of the invention and the code of the invention which, once read by the device 200, is stored in the storage means 2002. Alternatively, the program enabling the device to implement the invention could be stored in a read-only memory (for example a ROM) 2008. In a second variant, the program could be received via the network and stored in exactly the same way as described above.

The device 200 is connected to a microphone 2010 via an input/output card 2012. The data to be processed in accordance with the invention comes in this case from the audio signal.

This same device includes a screen 2014 for visualizing the information to be processed or to serve as an interface with the user, who can set parameters of certain processing modes using a keyboard 2016, a mouse or any other means.

A central processor unit (CPU) 2018 executes the instructions relating to implementation of the invention, which instructions are stored in the read-only memory 2008 or in the other storage elements. On power up, the processing programs and methods stored in one of the (non-volatile) memories, for example the ROM 2008, are transferred into a random-access memory (for example a RAM) 2020, which then contains the executable code of the invention and the variables necessary for implementing the invention.

A communication bus 2022 provides communication between the various subsystems of the microcomputer 200 or connected to it. The representation of the bus 2022 is not limiting on the invention and, in particular, the central processor unit 2018 is adapted to communicate instructions to any subsystem of the microcomputer 200 either directly or via another subsystem of the microcomputer 200.

The device described here is adapted to contain all or part of the processing in accordance with the invention described herein. 

1. Method of generation of a plurality of discrete spectra ŝ(i) of dimension Q, mutually orthogonal and of controlled power, i designating the number of the spectrum, said spectra representing temporal signals in the spectral domain and being of constant modulus μ in a set G designating spectrum lines and zero everywhere else, said method being characterized in that it consists in: determining (20) at least part of a complex Hadamard matrix H of order d_(R)=w in the case of real signal spectra and d_(R)=2.w in the case of complex signal spectra; determining (22) the prolongation P of the matrix H from G and from the dimension Q; and obtaining (22) said controlled power spectra ŝ(i)=μ.P(H[.][i]), where H[.][i] designates the i^(th) column of the matrix H.
 2. Method according to claim 1, characterized in that the step (20) of determination of at least part of the complex Hadamard matrix consists in obtaining a column ({tilde over (H)}_(key)[.][i]) of a matrix of rotations calculated from predetermined rotation and permutation keys applied to a reference Hadamard matrix ({tilde over (H)}_(ref)).
 3. Method according to claim 2, characterized in that it further includes a step of decomposition of the order d_(R) of said reference Hadamard matrix into a product of factors (f_(i)) and a substep of calculation of the lowest common multiple (θ) of the set of said factors for the determination of the reference Hadamard matrix.
 4. Method according to claim 1, characterized in that it further includes a step (24) of determining a signal: ${{{s(i)}\lbrack k\rbrack} = {\sum\limits_{x \in Q}\left( {{{\hat{s}(i)}\lbrack x\rbrack} \cdot {\prod\limits_{\alpha \in {\lbrack{X + T}\rbrack}}{{F_{(q_{\alpha})}\left\lbrack {k\lbrack\alpha\rbrack} \right\rbrack}\left\lbrack {x\lbrack\alpha\rbrack} \right\rbrack}}} \right)}},$ where: i designates the number of the signal, Q designates a set of coordinates, X designates the number of spatial dimensions, T designates the number of temporal dimensions, and F_((q) _(α) ₎ designates the Fourier matrix of order q_(α), so as to generate a plurality of mutually orthogonal temporal signals s(i).
 5. Method of generation of a family of temporal signals t(i), characterized in that it consists in combining families of mutually orthogonal temporal signals generated by a method according to claim 4 and the spectra supports whereof are separate.
 6. Method of using mutually orthogonal temporal or complex spectrum signals generated by a method according to claim 1 for spectrum spreading in spread spectrum transmission systems.
 7. Method of using mutually orthogonal temporal or complex spectrum signals generated by a method according to claim 1 for audio tattooing and its detection.
 8. Method of using controlled power mutually orthogonal complex spectra generated by a method according to claim 1 for coding or representing audio signals quantized with the aid of a dictionary or a family of dictionaries of real or complex values.
 9. Method of using controlled power mutually orthogonal temporal or complex spectrum signals generated by a method according to claim 1 for optimization of metrology excitation data.
 10. Device for generation of a plurality of discrete spectra ŝ(i) of dimension Q, mutually orthogonal and of controlled power, i designating the number of the spectrum, said spectra representing temporal signals in the spectral domain and being of constant modulus μ in a set G designating spectrum lines and zero everywhere else, the device being characterized in that it includes: means for determining at least part of a complex Hadamard matrix H of order d_(R)=w in the case of real signal spectra and d_(R)=2.w in the case of complex signal spectra; means for determining the prolongation P of the matrix H from G and from the dimension Q; and means for obtaining said controlled power spectra ŝ(i)=μ.P(H[.][i]), where H[.][i] designates the i^(th) column of the matrix H.
 11. Device for coding audio signals, characterized in that it includes a dictionary in which are stored mutually orthogonal complex spectra generated by a device according to claim
 10. 12. Computer program product adapted to be loaded into a programmable device, characterized in that it includes sequences of instructions for implementing a method according to claim 1 when the program is loaded and executed by the programmable device. 